home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 March / macformat-022.iso / Shareware City / Developers / ANSI folder / INTO Runtime ƒ / C++ 68K ƒ / Sources ƒ / CPlusLib68K.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-13  |  2.4 KB  |  58 lines  |  [TEXT/MMCC]

  1. /************************************************************************/
  2. /*    Project...:    C++ and ANSI-C Compiler Environment                        */
  3. /*    Name......:    CPlusLib.h                                                */
  4. /*    Purpose...:    C++ specific runtime functions                            */
  5. /*  Copyright.: ©Copyright 1994 by metrowerks inc. All rights reserved. */
  6. /************************************************************************/
  7.  
  8. typedef struct DestructorChain {
  9.     struct DestructorChain    *next;            //    pointer to next destructor chain element
  10.     void                    *destructor;    //    pointer to destructor function
  11.     void                    *object;        //    pointer to memory location (0L: element is marker)
  12. } DestructorChain;
  13.  
  14. typedef struct MemberFuncPointerType {
  15.     long    this_delta;                //    delta to this pointer
  16.     long    vtbl_offset;            //    offset in vtable (-1: not a virtual function)
  17.     union {
  18.         void    *func_addr;            //    nonvirtual function address
  19.         long    ventry_offset;        //    offset of virtual function entry in vtable
  20.     }    func_data;
  21. } MemberFuncPointerType;
  22.  
  23. #ifdef __cplusplus
  24. extern "C" {
  25. #endif
  26.  
  27. //    these functions/variables are defined in startup code
  28. extern DestructorChain    *__global_destructor_chain;
  29.  
  30. extern void                __destroy_global_chain(void);
  31.  
  32. //    these functions/variables are defined in CPlusLib.c
  33. extern DestructorChain    *__local_destructor_chain;
  34.  
  35. extern long                __ptmf_test(const void *ptmf);
  36. extern long                __ptmf_cmpr(const void *ptmf1,const void *ptmf2);
  37. extern void                __ptmf_call(...);
  38. extern void                __ptmf_scall(...);
  39. extern void                *__ptmf_cast(long offset,const void *ptmfrom,void *ptmto);
  40. extern void                *__register_global_object(void *object,void *destructor,void *regmem);
  41. extern void                *__register_local_object(void *object,void *destructor,void *regmem);
  42. extern void                *__preregister_local_object(void *object,void *regmem);
  43. extern void                *__reregister_local_object(void *regmem,void *destructor);
  44. extern void                __destroy_local_objects(void *regmem);
  45. extern void                __destroy_local_objects_to(void *regmem);
  46. extern void                __destroy_local_chain(void);
  47. extern void                *__new_hdl(size_t size);
  48. extern void                __del_hdl(void *hdl);
  49. extern void                *__copy(void *to,void *from,size_t size);
  50. extern void                *__init_arr(void *memptr,void *constructor,size_t object_size,size_t nobjects);
  51. extern void                *__new_arr(void *constructor,size_t object_size,size_t objects);
  52. extern void                __del_arr(void *memptr,void *destructor);
  53. extern void                __dc_arr(void *mem,void *con_des,short object_size,short objects);
  54.  
  55. #ifdef __cplusplus
  56. }
  57. #endif
  58.